""""""
import os

from scripts.handle_path import CONFIGS_DIR

"""
______________________________
time：2021/5/20
封装一个类：用来读取xx.conf格式的配置文件里的数据，及向配置文件中写入数据；

注：后续用yaml格式比较多；
______________________________

"""
from configparser import ConfigParser


class HandleConfig(object):
    def __init__(self, filename):
        self.filename = filename
        # 1.创建配置解析器对象
        self.config = ConfigParser()
        # 2.打开要读取的配置文件
        self.config.read(self.filename, encoding="utf8")

    def get_value(self, section, option):
        """
        3.读取配置文件中的数据（两种方式）
          a.两种方式从配置文件中读取的所有数据都是字符串类型[使用索引[]或get方法]；
          b.方法二中，get方法不同于字典中的get方法，第一个参数为区域名，第二个参数为选项名
        """
        return self.config.get(section, option)

    def get_int(self, section, option):
        return self.config.getint(section, option)

    def get_float(self, section, option):
        return self.config.getfloat(section, option)

    def get_boolean(self, section, option):
        return self.config.getboolean(section, option)

    def get_eval_data(self, section, option):
        return eval(self.config.get(section, option))

    @staticmethod
    def write_config(datas, filename):
        """向配置文件中写入配置信息"""
        """读和写尽量分开，用不同的解析器对象"""
        # 1.创建配置解析器对象
        config = ConfigParser()
        for key in datas:
            config[key] = datas[key]
        with open(filename, mode="w",
                  encoding="utf8") as file:
            config.write(file)


READ_CONFIG_PATH = os.path.join(CONFIGS_DIR, 'testcase.conf')  # 用到配置文件时取对应名字
do_config = HandleConfig(READ_CONFIG_PATH)

if __name__ == '__main__':
    # do_config = HandleConfig(CONFIGS_DIR, 'testcase.conf')
    # res = do_config.get_value("excel", "cases_path")
    # print(res)
    # 写入配置中的数据
    datas = {
        "excel":
            {"cases_path": " cases.xlsx"},
        "user":
            {"username": "wwwwwwwwwwwwwwwwwww",
             "password": "123456"
             },
        "book": {
            "bookname": "怪诞心理学",
            "bookauthor": "不知道"
        }
    }
    WRITE_CONFIG_PATH = os.path.join(CONFIGS_DIR, 'write_testconfig.ini')
    do_config.write_config(datas, WRITE_CONFIG_PATH)
